package gdf

import (
	"bytes"
	"gitee.com/liumou_site/logger"
	"net/http"
)

// buff 函数用于处理 HTTP 响应，将响应体内容读取到缓冲区中。
// 这有助于在不直接处理响应体的情况下，记录或检查响应内容。
// 参数:
//
//	resp (*http.Response): HTTP 响应对象，包含响应头和响应体。
//
// 返回值:
//
//	error: 如果读取响应体过程中发生错误，则返回该错误；否则返回nil。
func buff(resp *http.Response) error {
	// 使用bytes.Buffer来存储http.Response的Body内容。
	// 将响应体内容读取到缓冲区中
	var buf bytes.Buffer

	// 从resp.Body中读取内容并写入到buf中。
	// 从响应体中读取数据并将其存储到缓冲区中。
	// 如果读取过程中发生错误，则记录错误信息并返回false，表示读取失败。
	_, err := buf.ReadFrom(resp.Body)
	if err != nil {
		// 如果在读取过程中发生错误，记录错误信息并返回错误。
		logger.Error("Error Reading Response Body:", err)
		return err
	}

	// 读取完成后，重置buf，以便后续使用。
	buf.Reset()

	// 记录文件下载成功的日志信息。
	logger.Info("Url Downloaded Successfully: ", resp.Request.URL.String())
	return nil
}
